package org.jeecg.modules.flow.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.activiti.engine.task.TaskInfo;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.flow.entity.FlowAudit;
import org.jeecg.modules.flow.query.SubmitTaskQuery;
import org.jeecg.modules.flow.vo.FlowActAuditVo;

import java.util.List;
import java.util.Set;

/**
 * @Description: flow_audit
 * @Author: zzq
 * @Date: 2021-11-08
 * @Version: V1.0
 */
public interface IFlowAuditService extends IService<FlowAudit> {

    /**
     * 根据流程实例查询审核列表
     *
     * @param processInstanceId
     * @return
     */
    List<FlowAudit> listByInstanceId(String processInstanceId);

    /**
     * 根据任务ID获取审核意见
     *
     * @param taskId
     * @return
     */
    FlowAudit getByTaskId(String taskId);

    /**
     * 写入意见
     * 注意：该接口写入意见后会根据会删除 key为：flow:cache:audits:{processInstanceId} 的缓存
     *
     * @param flowAudit
     * @return 插入成功的条数
     */
    Integer addAudit(FlowAudit flowAudit);

    /**
     * 保存审核日志
     *
     * @param task
     * @param query
     * @return
     */
    boolean saveAudit(TaskInfo task, SubmitTaskQuery query, LoginUser user);

    /**
     * 根据流程任务ids查询审核意见列表
     *
     * @param taskIds
     * @return
     */
    List<FlowActAuditVo> getByTaskIds(Set<String> taskIds);
}
